# 有些情况下我们希望能直接访问Request对象
# 例如我们在路径操作函数中想获取客户端的IP地址
# 需要在函数中声明Request类型的参数，FastAPI 就会自动传递 Request 对象给这个参数
# 我们就可以获取到 Request 对象及其属性信息，例如 header、url、cookie、session 等

from fastapi import FastAPI
from fastapi import Request
import uvicorn

app = FastAPI()

@app.get("/items")
async def items(request: Request):
    return {
        "请求URL：": request.url,
        "请求ip：": request.client.host,
        "请求宿主：": request.headers.get("user-agent"),
        "cookies": request.cookies,
    }

if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1", port=8000)

# 访问： http://127.0.0.1:8000/items
